package action.chain;


import action.chain.vo.HolidayRequest;
import lombok.Getter;

/**
 * 抽象处理者
 * 维护下一级的处理者的引用
 * @author Foogui
 * @date 2023/03/23
 */
@Getter
public abstract class Handler {

    protected Handler next; //定义后继对象

    protected String name; //审批者姓名

    public Handler(String name) {
        this.name = name;
    }

    /**
     * 设置下一级的处理者，形成处理请求的链路关系，以便将请求转发给下家
     * 链式设置
     * @param next 下一级处理者
     */
    public Handler setNext(Handler next) {
        this.next = next;
        return this.next;
    }

    /**
     * 处理请求的方法，具体交给子类去实现
     *
     * @param holidayRequest 假期请求
     */
    abstract void handleHoliday(HolidayRequest holidayRequest);

}
